home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / cli / mx2src.arc / MX2LIB.C < prev    next >
C/C++ Source or Header  |  1989-01-05  |  2KB  |  82 lines

  1. /* These are some interface routines for MX2 using C. It is written     */
  2. /* using Mark Johnson's Shareware C compiler version 1.2                */
  3. /* If I receive requests maybe I will write a complete interface or     */
  4. /* someone else can feel free.                                          */
  5.  
  6.  
  7. #define MX2GLOBAL       0x144L
  8. #define MX2MAGIC        22261L
  9. struct  PIPE    {
  10.         char    pipename[80];
  11.         short   buf[1024];
  12.         int     bufsize;
  13.         int     bufhead;
  14.         int     buftail;
  15.         int     cnt;
  16. };
  17. struct  sysreq  {
  18.         int     req;
  19.         int     pid;
  20.         long    magic;
  21. };
  22. struct  spinttype {
  23.         long    proc;
  24.         int     pid;
  25.         long    data;
  26. };
  27. struct  sysvar  {
  28.         long    *currentprocess;
  29.         int     *MULTI;
  30.         long    *slicebegin;
  31.         long    *contextswitch;
  32.         long    *command;
  33.         long    *request;
  34.         long    *CRON;
  35.         int     *spintenable;
  36.         int     *spintmask;
  37.         long    *spint;
  38.         long    *bpsave;
  39.         long    *pipes;
  40.         long    *sysmemsize;
  41.         long    *gemsaveGvec;
  42.         long    *StartProcess; /* The following are pointers to fuctions */
  43.         long    *SwapProcess;
  44.         long    *TermProcess;
  45.         long    *NextPid;
  46.         long    *SleepProcess;
  47.         long    *WakeupProcess;
  48.         long    *ChangeProcessPriority;
  49.         long    *MultiBegin;
  50.         long    *MultiEnd;
  51.         long    *DozeProcess;
  52.         long    *WaitProcess;
  53. };
  54.         struct  sysvar  *mx2var;
  55.  
  56. main()
  57. {
  58.         long    *contextswitch,*sysmemsize;
  59.  
  60.         GetSysVar(); /* store mx2 system variable pointers in mx2var */
  61.         contextswitch = (long *) mx2var->contextswitch;
  62.         printf("Total context switches  %lu   / address %lx / \n",
  63.                 *contextswitch,contextswitch);
  64.         sysmemsize = (long *) mx2var->sysmemsize;
  65.         printf("MX2 system memory  %lu   / address %lx / \n\n",
  66.                 *sysmemsize,sysmemsize);
  67.         exit(0);
  68. }
  69.  
  70. /*      This routine will read MX2 system variables and procedures      */
  71. /*      and return them as a pointer in mx2var.                         */
  72. void    GetSysVar()
  73. {
  74.         long    *adr,ssv;
  75.  
  76.         ssv = 0L;
  77.         ssv = (long *) trap(1,0x20,ssv);
  78.         adr = MX2GLOBAL;           /* system variable address pointer */
  79.         mx2var = (struct sysvar *) *adr;
  80.         ssv = trap(1,0x20,ssv);
  81. }
  82.